package com.lzh.common.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/***
 * @author lizuhu
 * @description 获取上下文对象中的信息
 * @date 2021/6/28 : 11:29
 ****/
public class RequestContextUtil {

    /**
     * 获取请求头中指定数据  name = token
     * @param name
     */
    public static String header(String name){
        //获取当前请求中的属性信息 - Request
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
        String header = requestAttributes.getRequest().getHeader(name);
        return header;
    }

    /**
     * 令牌信息
     * @return
     */
    public static Jws<Claims> parse(String name){
        //获取令牌
        String token = header(name);
        //AppUtil解析令牌
        Jws<Claims> parse = AppJwtUtil.getJws(token);
        return parse;
    }

    /**
     * 获取令牌中指定的属性信息
     * @param name 令牌token
     * @param getNode  需要获取属性
     * @return
     */
    public static Object getToken(String name,String getNode){
        //令牌解析后的数据
        Jws<Claims> parse = parse(name);
        Object result = parse.getBody().get(getNode);
        return result;
    }
}
